Users of computing devices (e.g., laptops, cellular phones, and personal digital assistants) often need to communicate in real time. A common form of real-time communications is provided by instant messaging services. An instant messaging service allows participants at endpoints to send messages and have them received within a second or two by the other participants in a conversation. The receiving participants can then send responsive messages to the other participants in a similar manner. To be effective, a real-time conversation relies on the participants' becoming aware of, reviewing, and responding to received messages very quickly. This quick response is in contrast to conventional electronic mail systems in which the recipients of electronic mail messages respond to messages at their convenience.
When an initiating participant wants to start a real-time conversation, that participant needs to know whether the intended participants are available to respond in real time to a message. If not, then communications via conventional electronic mail, voice mail, or some other mechanism may be more appropriate. For example, if the computers of the intended participants are currently powered off, then a real-time conversation may not be possible. Moreover, if their computers are currently powered on, but the intended participants are away from their computers, a real-time conversation is also not possible. The initiating participant would like to know the availability of the intended participants so that an appropriate decision on the form of communication can be made.
Presence services provide this availability information. The availability status of an entity such as a computer system or a user associated with that computer system is referred to as “presence information.” Presence information identifies the current “presence state” of the user. Users make their presence information available to a presence service so that other users can decide how best to communicate with them. For example, the presence information may indicate whether a user is logged on (“online”) with an instant messaging service or is logged off (“offline”). Presence information may also provide more detailed information about the availability of the user. For example, even though a user is online, that user may be away from their computer in a meeting. In such a case, the presence state may indicate “online” and “in a meeting.”
In an instant messaging context, a publishing user (“publisher”) may provide their presence information to a presence server that then provides the presence information to subscribing users (“subscribers”). Thus, a presence server may use a subscriber/publisher model to provide the presence information for the users of the presence service. Whenever the presence information of a user changes, the presence server is notified of the change by that user's computer system and in turn notifies the subscribing users of the change. A subscribing user can then decide whether to initiate an instant messaging conversation based on the presence information of the intended participants. For example, if the presence information indicates that a publishing user is currently in a conference telephone call, then the subscribing user may decide to send an instant message, rather than place a telephone call, to the publishing user. If the subscribing user, however, needs to call and speak with the publishing user, the subscribing user needs to monitor the presence information of the publishing user to know when the call can be placed. When the subscribing user notices that the publishing user's presence information indicates that the telephone conference has been concluded, the subscribing user can then place the telephone call.
An instant messaging system may allow each user to specify what other users are considered to be “contacts.” A contact is typically a person with whom a user has some relationship. For example, the contacts of a user may include all the other users working on the same project, all the users to whom the user has recently sent an instant message, and so on. The instant messaging system may display the current presence state for certain contacts so the user can decide with which contacts to communicate and with which mode of communication as described above. The instant messaging system may display the name of a contact along with an icon that represents the contact's current presence state. For example, the instant messaging system may display a button that is green when the contact is online and a button that is red when the contact is not online.
A difficulty with current techniques for graphically indicating the presence states of contacts is that the graphic indications represent high-level presence states (e.g., online), rather than low-level presence states (e.g., online and in a meeting). An indication of a contact's high-level presence state may not provide a user with enough information to make an informed decision about how best to communicate with the contact. For example, a green button may indicate that the contact is online. The contact could, however, be online and in a meeting, online and at lunch, online and performing some low-priority, interruptible task, and so on. Without knowing the low-level presence state of a contact, a user may attempt to communicate with the contact with a mode of communication that is not appropriate for the contact's current presence state. For example, the user may send an instant message to a contact who is online and making a presentation at a meeting.